package com.xs.anxingo.server.api.req;

import com.xs.anxingo.server.dto.HouseInfoDto;
import com.xs.anxingo.server.enumeration.HouseUseTypeEnum;
import com.xs.anxingo.server.exception.BusinessException;
import lombok.Getter;
import lombok.Setter;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;

/**
 * Created by Administrator on 2019/12/10.
 */
@Getter
@Setter
public class AddHouseInfoRequest extends BaseRequest {


    /**
     * 房屋id
     */
    private String houseId;

    /**
     * 房源类型(1:出售;2:出租;3:租售)
     */
    private Integer type;

    /**
     * 类型(1:电梯房;2-非电梯房;3-别墅;4-门店;5-厂房;6-仓库)
     */
    private Integer houseType;

    /**
     * 房屋名称
     */
    private String houseName;

    /**
     * 小区id
     */
    private String villageId;

    /**
     * 号
     */
    private Integer number;

    /**
     * 楼
     */
    private Integer floor;

    /**
     * 室
     */
    private Integer room;

    /**
     * 室数
     */
    private Integer roomCount;

    /**
     * 厅数
     */
    private Integer sittingCount;

    /**
     * 卫数
     */
    private Integer toiletCount;

    /**
     * 厨数
     */
    private Integer kitchenCount;

    /**
     * 阳台数
     */
    private Integer balconyCount;

    /**
     * 阁楼数
     */
    private Integer loftCount;

    /**
     * 花园数
     */
    private Integer gardenCount;

    /**
     * 面积(平米)
     */
    private BigDecimal area;

    /**
     * 总价(万元)
     */
    private BigDecimal price;

    /**
     * 租金(元)
     */
    private BigDecimal rentPrice;

    /**
     * 业主id
     */
    private String ownerId;

    /**
     * 数据状态(1:公开;2:权限内可见;3:本人可见)
     */
    private Integer lockStatus;

    /**
     * 其他信息
     */
    private HouseInfoDto otherInfo;

    @Override
    public String verification() {
        String info = super.verification();
        if (!StringUtils.isEmpty(info)) {
            throw new BusinessException(info);
        }
        if (StringUtils.isEmpty(this.type)) {
            return "房源类型不能为空";
        }
        if (StringUtils.isEmpty(this.houseType)) {
            return "类型不能为空";
        }
        if (StringUtils.isEmpty(this.houseName)) {
            return "房屋名称不能为空";
        }
        if (StringUtils.isEmpty(this.villageId)) {
            return "小区不能为空";
        }
        if (StringUtils.isEmpty(this.number)) {
            return "号不能为空";
        }
        if (StringUtils.isEmpty(this.floor)) {
            return "楼不能为空";
        }
        if (StringUtils.isEmpty(this.room)) {
            return "室不能为空";
        }
        if (StringUtils.isEmpty(this.area)) {
            return "面积不能为空";
        }
        if (HouseUseTypeEnum.SELL.getCode().equals(this.type)) {
            if (this.price == null) {
                return "售价不能为空";
            }
        } else if (HouseUseTypeEnum.RENT.getCode().equals(this.type)) {
            if (this.rentPrice == null) {
                return "租金不能为空";
            }
        } else if (HouseUseTypeEnum.ALL.getCode().equals(this.type)) {
            if (this.price == null || this.rentPrice == null) {
                return "售价和租金不能为空";
            }
        }
        if (StringUtils.isEmpty(this.ownerId)) {
            return "业主不能为空";
        }
        if (StringUtils.isEmpty(this.lockStatus)) {
            return "数据状态不能为空";
        }
        return null;
    }

}
